//
//  SYStatusListViewModel.swift
//  SYWeibo
//
//  Created by Eric on 16/7/24.
//  Copyright © 2016年 Eric. All rights reserved.
//

import UIKit

class SYStatusListViewModel: NSObject {
    //全局ViewModel 数组
    lazy var statusList: [SYStatusViewModel] = [SYStatusViewModel]()
    
}
//微博首页
extension SYStatusListViewModel{
    
    func loadHomeData(isPullUp: Bool,isFinish:(isSuc: Bool,count: Int)->()){ /*
        - 如果是上啦记载更多  需要给服务器maxid   sinceid == 0
        - 如果是下拉刷新  需要给服务器sinceId   maxId == 0
        - 如果sinceid == 0  maxid == 0  默认服务器返回最新的20条数据
        */
        
        var maxId:Int64 = 0
        var sinceId: Int64 = 0
        // 上拉加载更多
        if isPullUp {
            maxId = statusList.last?.status?.id ?? 0
            // 因为服务器返回来重复数据 需要程序员自己处理
            if maxId > 0 {
                maxId -= 1
            }
        }else {
            // 下拉刷新
            sinceId = statusList.first?.status?.id ?? 0
        }
        SYNetworkTools.sharedTool.homeLoadData(sinceId, maxId: maxId, success: { (response) -> () in
            
            //判断是否为nil 且 可以转换成数组
            guard let res = response?["statuses"] as? [[String: AnyObject]] else{
                isFinish(isSuc: false, count: 0)
                return
                
            }
            //定义一个临时可变数组
            var tempArray: [SYStatusViewModel] = [SYStatusViewModel]()
            
            //遍历数组
            for dic in res{
                //创建一个模型
                let status = SYStatus(dict: dic)
                //创建就一个ViewModel
                let statusViewModel = SYStatusViewModel(status: status)
                //添加ViewModel
                tempArray.append(statusViewModel)
            }
            //上拉加载更多
            if isPullUp{
                self.statusList = self.statusList + tempArray
                isFinish(isSuc: true, count: -1)
            }else {
                //下拉刷新
                self.statusList = tempArray + self.statusList
                isFinish(isSuc: true,count:  tempArray.count)
            }
            
            }) { (error) -> () in
                print("请求失败:\(error)")
                isFinish(isSuc: true,count:  0)
        }
    }
}